
#ifndef DENOISING_DATA_TYPE_H
#define DENOISING_DATA_TYPE_H
#include <pcl/common/time.h>
#include <pcl/common/transforms.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/search/impl/kdtree.hpp>
#include <pcl_conversions/pcl_conversions.h>
#include <pcl/conversions.h>
#include <pcl_ros/transforms.h>
#include "cloud_data.hpp"
typedef pcl::PointXYZ xyz;
typedef pcl::PointXYZI xyzi;
typedef pcl::PointXYZRGB xyzrgb;
typedef pcl::PointCloud<xyzi> xyzi_;
typedef pcl::PointCloud<xyz> xyz_;
typedef pcl::PointCloud<xyzrgb> xyzrgb_;
typedef pcl::PointCloud<xyzi>::Ptr xyzi_ptr;
typedef pcl::PointCloud<xyz>::Ptr xyz_ptr;
typedef pcl::PointCloud<xyzrgb>::Ptr xyzrgb_ptr;
struct point
{
    double x;
    double y;
    double z;
};
struct ImuData
{
    double time;
    double AngX;
    double AngY;
    double AngZ;
    double LinerX;
    double LinerY;
    double LinerZ;
    double OriX;
    double OriY;
    double OriZ;
    double OriW;
    double pitch;
    double roll;
    double heading;
    void Reset()
    {
        AngX = 0;
        AngY = 0;
        AngZ = 0;
        LinerX = 0;
        LinerY = 0;
        LinerZ = 0;
        time = 0;
        OriX = 0;
        OriY = 0;
        OriZ = 0;
        OriW = 1;
        heading = 0;
        roll = 0;
        pitch = 0;
    }
};
struct LidarData
{
    CloudData::CLOUD_PTR lidar_data;
    double time = 100;
};
struct LidarImu
{
    ImuData imu_data;
    CloudData::CLOUD_PTR lidar_data;
};

#endif